package cn.yuanqiao.activiti.mapper;

import cn.yuanqiao.activiti.domain.ActArchiveData;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 流程档案数据绑定Mapper接口
 * 
 * @author lyk
 * @date 2023-07-11
 */
public interface ActArchiveDataMapper 
{
    /**
     * 查询流程档案数据绑定
     * 
     * @param deployId 流程档案数据绑定主键
     * @return 流程档案数据绑定
     */
    public ActArchiveData selectActArchiveDataByDeployId(String deployId);

    /**
     * 查询流程档案数据绑定列表
     * 
     * @param actArchiveData 流程档案数据绑定
     * @return 流程档案数据绑定集合
     */
    public List<ActArchiveData> selectActArchiveDataList(ActArchiveData actArchiveData);

    /**
     * 新增流程档案数据绑定
     * 
     * @param actArchiveData 流程档案数据绑定
     * @return 结果
     */
    public int insertActArchiveData(ActArchiveData actArchiveData);


    public int batchInsertActArchiveData(List<ActArchiveData> actArchiveData);

    /**
     * 修改流程档案数据绑定
     * 
     * @param actArchiveData 流程档案数据绑定
     * @return 结果
     */
    public int updateActArchiveData(ActArchiveData actArchiveData);

    /**
     * 删除流程档案数据绑定
     * 
     * @param deployId 流程档案数据绑定主键
     * @return 结果
     */
    public int deleteActArchiveDataByDeployId(String deployId);

    /**
     * 批量删除流程档案数据绑定
     * 
     * @param deployIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteActArchiveDataByDeployIds(String[] deployIds);

    public ActArchiveData selectActArchiveDataByArchiveId(String archiveId);

    int updateActArchiveDataByDeployId(String processInstanceId);

    void batchUpdateArchiveState(@Param("archiveList")List<Map<String,Object>> sql);

    int updateYqdaBorrowState(@Param("borrowId") String borrowId, @Param("state") String state);

    int updateYqdaBorrowItemStateWithDaIdAndBorrowId(@Param("borrowId") String borrowId, @Param("state") String state, @Param("archiveNotAgree")List<String> archiveNotAgree);


    String getBusinessIdFromWorkFlowArchiveSaveByInstanceId(@Param("instanceId")String instanceId, @Param("tenantCode") String tenantCode);

    String getInnerFileTableName(@Param("categoryId")String subTableName, @Param("tenantCode")String tenantCode);

    String getInnerFolderTableName(@Param("categoryId")String subTableName, @Param("tenantCode")String tenantCode);

    List<Map<String,Object>> executeSql(String sql);

    void batchUpdateArchiveColumn(@Param("archiveList")List<Map<String,Object>> sql);


}
